草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - 在 C 中,将函数指针赋值给适当类型的变量给出 "cannot convert ... in assignment"

采用以下C/C++代码:#includeintinc(inti){returni+1;}//int→int,likeabs()//bazisbool→(int→int)int(*baz(boolb))(int){returnb?&abs:&inc;}intmain(){int(*foo(bool))(int);//foois&(bool→(int→int))foo=baz;}尝试编译这个(gcc或g++)给出:$g++test.cctest.cc:Infunction‘intmain()’:test.cc:9:error:assignmentoffunction‘int(*foo(bo

c++ - vector< vector <double>> 与 swig 和 python 的参数

我正在尝试弄清楚如何使用SWIG包装一个将2dvector返回给python的c++函数。我有文件functions.h#includestd::vector>array_mean(std::vector>array){std::vector>mean_array(rows,std::vector(cols));....returnmean_array;}在接口(interface)文件functions.i中有%modulefunctions%{#include"functions.h"%}%include"std_vector.i"namespacestd{%template(Ve

c++ - 从 C++ 引用静态库中的 C 函数

我有一个用C编写的静态函数库。假设头文件名为myHeader.h,如下所示:#ifndefMYHEADER_H#defineMYHEADER_Hvoidfunction1();voidfunction2();#endiffunction1和function2没什么特别的。假设它们存在于一个名为impl1.c的文件中,该文件如下所示:#include"myHeader.h"voidfunction1(){//code}voidfunction2(){//morecode}到目前为止提到的所有代码都被编译到一些名为libMyLib.a的静态库中。我宁愿不修改用于构建此库的任何代码。我还有一

c++ - C 不透明指针陷阱

我正在使用一个遗留的C库接口(interface)(到C++),它将不透明指针公开为typedefvoid*OpaqueObject在图书馆:OpaqueObjectCreateObject(){returnnewOurCppLibrary::Object();}这当然不会为这个库的客户提供类型安全。将typedef从void指针更改为结构指针是否应该完全相同,但提供少量类型安全?typedefstructOpaqueObjectInternal_*OpaqueObject//OpaqueObjectInternal_isNEVERdefinedanywhereinclientorli

c++ - 如何将系统命令输出存储在变量中?

我正在执行一个system()函数,该函数返回一个文件名。现在我不想在屏幕上显示输出(即文件名)或管道到新文件。我只想将它存储在一个变量中。那可能吗?如果是这样,如何?谢谢 最佳答案 单个文件名?是的。这当然是可能的,但不能使用system()。使用popen().这在c中可用和c++,您已经用两者标记了您的问题,但可能会在一个或另一个中编写代码。这是一个C语言的例子:#include#include#includeintmain(){FILE*fpipe;char*command="ls";charc=0;if(0==(fpipe

c++ - 打印数组元素内存地址 C 和 C++,为什么输出不同?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Howtosimulateprintf's%pformatwhenusingstd::cout?我尝试用C和C++打印出数组元素的内存地址。在C中:chararray[10];inti;for(i=0;i我得到了内存地址:0xbfbe3312、0xbfbe3313、0xbfbe3314、...。但是如果我尝试用C++做同样的事情:chararray[10];for(inti=0;i我得到了这个输出:�P�����k��为什么不一样?我应该在C++中以不同的方式使用cout来打印内存地址吗?我应该如何打印出内存

c++ - 复制一些大于 dst 的内容时,memcpy() 是否安全?

request_token.size()大于LEN是否安全?chardst[LEN];memcpy(dst,request_token.c_str(),request_token.size()); 最佳答案 不,这不安全;你会导致缓冲区溢出。原因是,除了您在第三个参数中传递的大小,memcpy无法知道您的目标缓冲区的大小。 关于c++-复制一些大于dst的内容时,memcpy()是否安全?,我们在StackOverflow上找到一个类似的问题: https:/

c++ - 函数参数中的 struct 关键字和常量正确性

我的库中有一个不透明类型定义为:typedefstructMyOpaqueType*MyType;//easiertotypeforclientcode我不能使用typedef传递指向const结构的指针,所以一些函数看起来像:voidUsePointerToConst(conststructMyOpaqueType*)代替:voidUserPointerToConst(constMyType)//can'tuse,isreallyconstantpointer所以,鉴于此,我有两个问题:参数列表中的struct关键字是否只在C中是必需的?有一个更好的方法吗?我应该创建一个typede

c++ - OpenMP,for 循环内部部分

我想运行以下代码(如下)。我想产生两个独立的线程,每个线程都运行一个并行的for循环。不幸的是,我得到一个错误。显然,并行for不能在section内产生。怎么解决?#include#include"stdio.h"intmain(){omp_set_num_threads(10);#pragmaompparallel#pragmaompsections{#pragmaompsection#pragmaompforfor(inti=0;i错误:main.cpp:Infunction‘intmain()’:main.cpp:14:9:warning:work-sharingregionm

c++ - 如何编写编译器后端以从 C 代码为用户定义的硬件架构生成程序集

我正在从事一个项目,我必须在其中定义一个新的处理器硬件架构。我需要一个编译器来为这个目标生成汇编代码(它有自己的指令集)。此处理器的程序将用C语言编写。我的想法是解析C代码并生成抽象语法树(AST),然后从AST生成程序集。当然,我想重用现有组件(我希望不需要重写C解析器),但是我可以使用哪些工具或框架来完成这项任务?谢谢。 最佳答案 看看LLVM.它由单独的模块组成,这些模块可以单独创建并通过中间语言进行通信。在这种情况下,您将不得不编写程序集后端并重用其他人的C编译器。 关于c++-